To use a kTweenTypePathToMatrixTranslation tween component, do the following:
Listing 11 shows how to create a kTweenTypePathToMatrixTranslation tween.
Listing 11 Creating a kTweenTypePathToMatrixTranslation tween container
OSErr err = noErr;
TimeValue tweenTime, duration;
Handle result = nil;
QTAtomContainer container = nil;
QTTweener tween = nil;
QTAtom tweenAtom;
duration = 8;
result = NewHandle( 0 );
if ( err = MemError() ) goto bail;
err = QTNewAtomContainer( &container );
if ( err ) goto bail;
err = CreateSamplePathTweenContainer( container,
kTweenTypePathToMatrixTranslation, 1,
false, duration, 0, &tweenAtom );
if ( err ) goto bail;
err = QTNewTween( &tween, container, tweenAtom, duration );
if ( err ) goto bail;
for ( tweenTime = 0; tweenTime <= duration; tweenTime++ ) {
MatrixRecord absoluteMatrix;
err = QTDoTween( tween, tweenTime, result, nil, nil, nil );
if ( err ) goto bail;
absoluteMatrix = *(MatrixRecord *)*result;
}
err = QTDisposeTween( tween );
bail:
if ( container ) QTDisposeAtomContainer( container );
if ( result ) DisposeHandle( result );
Listing 12 shows how to create a kTweenTypePathToMatrixTranslation tween in which the the kTweenReturnDelta flag is set.
Listing 12 Creating a kTweenTypePathToMatrixTranslation tween
err = CreateSamplePathTweenContainer( container,
kTweenTypePathToMatrixTranslation, 1,
true, duration, 0, &tweenAtom );
if ( err ) goto bail;
err = QTNewTween( &tween, container, tweenAtom, duration );
if ( err ) goto bail;
for ( tweenTime = 0; tweenTime <= duration; tweenTime++ ) {
MatrixRecord deltaMatrix;
err = QTDoTween( tween, tweenTime, result, nil, nil, nil );
if ( err ) goto bail;
deltaMatrix = *(MatrixRecord *)*result;
}
err = QTDisposeTween( tween );
bail:
if ( container ) QTDisposeAtomContainer( container );
if ( result ) DisposeHandle( result );
| Previous | Chapter Contents | Chapter Top | Next |